#include "DOSEL.h"

DOSEL_T* DOSEL_t;


//************************************
// Method:    	CALCU_SAMA					//< SAMA运算函数
// Programmer:  lww
// Time:		2018/11/16
// Returns:   	bool						//< 成功：true；失败：false
// Parameter: 	Model_Base_t * arg			//< 模块参数结构体指针
// Parameter: 	float dt					//< 运算周期
// Parameter: 	bool * DI					//< 数字量输入值数组指针
// Parameter: 	bool * DO					//< 数字量输出值数组指针
// Parameter: 	bool * AI					//< 模拟量输入值数组指针
// Parameter: 	bool * AO					//< 模拟量输出值数组指针
//************************************
bool CALCU_SAMA(DOSEL)(Model_Base_t* arg, float dt, bool* DI, bool* DO, float* AI, float* AO)
{
	/****************变量定义区开始**************/
	/*<<<<<定义输入变量>>>>>*/
	bool Input_Value;				//< 输入值
	bool choose;					//< 选择情况
	/*<<<<<<<<<<<<<<<<<<<<<<*/

	/*<<<<<定义输出变量>>>>>*/
	bool Output_Value1 = false;		//< 输出值1
	bool Output_Value2 = false;		//< 输出值2
	/*<<<<<<<<<<<<<<<<<<<<<<*/
	bool Dlast_Out1;
	bool Dlast_Out2;
	/****************变量定义区结束**************/

	NAME(DOSEL)* Obj = (NAME(DOSEL)*)arg;

	/****************变量赋值**************/
	/*<<<<<输入变量赋值>>>>>*/
	Input_Value = DI[0];
	choose = DI[1];
	/*<<<<<<<<<<<<<<<<<<<<<<*/
	Dlast_Out1 = Obj->Base.Out.DO[0];
	Dlast_Out2 = Obj->Base.Out.DO[1];
	/**************变量赋值结束************/

	/********************************************/
	/**************算法功能实现开始**************/
	/********************************************/
	if (choose == true)
	{
		Output_Value1 = Input_Value;
		Output_Value2 = Dlast_Out2;
	}
	else
	{
		Output_Value1 = Dlast_Out1;
		Output_Value2 = Input_Value;
	}
	/********************************************/
	/**************算法功能实现结束**************/
	/********************************************/

	/****************运算结果输出**************/
	DO[0] = Output_Value1;
	DO[1] = Output_Value2;
	/**************运算结果输出完毕************/
	return true;
}

